Description:
Arbitrary Waveform Generator (AWG)
The project
This
Arbitrary Waveform Generator (AWG) is based on a PIC microcontroller
and a DAC. The waveform (25 words of 8 bit) and its frequency are
stored into the microcontroller EEPROM via the serial port of a PC.
Once programmed, the device can operate as a standalone unit.
Waveforms in the frequency range from 78 Hz to 25000 Hz can be
generated.
Detailed description
Two
modes of operation can be accessed via the button B1: programming mode
(PM) if B1 is pressed during power-up, or wave generation (WG)
otherwise. In PM the green led is on and the microcontroller, a
Microchip PIC16F84, waits for 27 words of 8 bits to be transmitted via
the serial port. The C program for DOS/Win95 included in this project
can be used to this end. Interfacing between TTL (0, +5 V logic) and
RS232 (-12 V, +12 V) is accomplished by a Maxim MAX232 interface
driver. The first 25 words represent the waveform shape (0 corresponds
to 0 V, 255 to +5 V output), the remaining two (F and HF) set the
frequency according to the following table, in decreasing order of
priority:
bit
0 of HF set => f = 25000 Hz
bit
1 of HF set => f = 20000 Hz
bit
2 of HF set => f = 16666 Hz
bits
0, 1, 2 of HF clear => f = 20000 / (F + 1) Hz; where F must be
>= 1.
The
data are stored into the EEPROM of the microcontroller. Thanks to
this, the AWG do not require reprogramming after a power down and can
operate as a standalone unit. The C program awf.c reads the data from
an ASCII file containing the 27 words in decimal format. For example,
a file containing the following data: 0 10 20 … 230 240 1 0 will
generate a sawtooth waveform at 10000 Hz frequency.
When
programming completes or when the device is powered-up with B1 in its
released position, the AWG enters the WG mode (red LED on) and the 25
words are fed into an 8-bit current-output AD0800 DAC whose output is
converted into a voltage in the range 0 to +5V by a MAX406 rail-to-rail
op-amp. The device requires a dual supply (-5 V, 0, +5 V).
Parts list
Part label |
Part description |
Quantity |
PIC16F84 |
PIC 16F84 |
1 |
MAX232 |
MAX 232 |
1 |
DAC0800 |
AD 0800 |
1 |
A1 |
MAX 406 |
1 |
D1 |
Green LED |
1 |
D2 |
Red LED |
1 |
R1, R2, R3, R4 |
5.6 K resistor ¼ W |
4 |
R5 |
10 K resistor ¼ W |
1 |
R6, R7 |
1 K resistor ¼ W |
2 |
C1 |
22 nF poli. |
1 |
C2, C3 |
68 nF poli. |
2 |
C4, C5 |
33 pF ceramic |
2 |
C7, C8, C9, C10, C11 |
1 uF elec. |
5 |
B1 |
Button |
1 |
The
complete C code, PIC assembly code listings and above description can be
viewed in the following Word file: AWGdescription.doc
|